A computer or similar device typically has a bus that connects peripherals to the computing system. Sometimes a hub or multiple hubs may be placed between the peripheral and the computing system (host). A hub provides a fan-out capability by allowing multiple peripherals to be connected to the hub which is in turn connected to the host or a daisy-chain of hubs of which is ultimately connected to the host. Some of the peripherals operate at a high data rate and some operate at a low data rate. Due to a variety of advances (e.g. computing power) in computers (hosts) and peripherals, the data rates at which some peripherals operate have increased significantly. The increase in data rates cannot be met using existing bus standards. For example, the relative difference between the highest data rate peripheral on a bus and the lowest data rate peripheral on a bus has increased to the point that existing solutions for allowing high data rate peripherals and low data rate peripherals to co-exist on the same bus are typically not very efficient. Additionally, existing solutions for allowing hosts to communicate with both advanced, high data rate devices and legacy, low data rate devices usually require the host and/or hub to be relatively complex and costly.
Existing solutions for allowing high data rate peripherals and low data rate peripherals to co-exist on the same bus are typically not very efficient when used for buses whose ratio of the highest data-rate supported on the bus to the lowest data rate supported on the bus is relatively large. Examples of low data rate peripherals include computer mouse devices, and joy-sticks that need to co-exist along with high data-rate peripherals. Examples of relatively high data rate peripherals, include cameras, compact disc players, speakers, video cameras, microphones, video display devices, and scanners among other devices. A mouse typically has a data rate significantly less than 0.1 Mb/s, while a video display device can have a data rate in excess of 20 Mb/s. When the ratio of the highest data rate to the lowest data rate is relatively small, solutions such as speed-shifting and non-multiplexed store-and-forward transactions are tolerable despite their relative inefficiency.
In the well-known Universal Serial Bus (USB), for example, speed-shifting refers to a host communicating at a low-speed with low data rate peripherals and alternatively at full-speed with high data rate devices (speed-shifting). Unfortunately, the amount of data actually transmitted over the bus (effective throughput) is less than that achievable by limiting the bus to full-speed transactions.
Non-multiplexed store and forward transactions occur when a host (1) transmits, at a high data rate, a packet to a store-and-forward hub, (2) waits for the hub to forward at the low data rate the packet to the peripheral, (3) waits for the peripheral to respond at the low data rate to the hub, and (4) receives from the hub at a high data rate the peripheral's response to the packet. When the ratio of the highest data rate supported on the bus to the lowest data rate supported on the bus is relatively large, this co-existence solution may also result in a low effective throughput or bandwidth because of the time wasted in waiting for the hub to forward the packet at the low data rate and for the peripheral to respond at the low data rate.
Accordingly, scheduling time for data sent and received by devices connected to a hub requires that the host controller determine a first estimated unused capacity left in a first frame in which a second transaction is to be performed between a hub and an agent. The host controller then determines an amount of a first data item that can fit into the estimated unused capacity of the frame to be sent to the hub during a first transaction and then sent by the hub to the agent during a second transaction.
Occasionally, after the scheduling is completed and data is being transmitted, additional devices are connected to the bus. Furthermore, previously connected devices may stop operating or need less bandwidth. The connection of new devices and disconnection of connected devices requires that the host controller create a new schedule to allocate the change in bandwidth. The host controller and system software, however, cannot change the schedule while the schedule is still active. If the transaction descriptors (TDs), which carry information regarding the scheduling of the transactions between the host controller, hub, and devices, are changed during an active schedule, then spurious errors may occur in USB device operation. Current solutions for updating and changing the active schedule require that the transaction descriptors be removed from the schedule and updated then returned back into the schedule. Removing the transactions descriptors slows down the overall performance of the system or requires complex software methods.
As described above, existing host controllers are not capable of changing the active schedule of transactions between the system and the devices. Consequently, it is desirable to provide an apparatus and method for allowing changes to be made to an active schedule without removing the transaction descriptors from the active schedule.